﻿#VisualFreeBasic_Form#  Version=5.9.7
Locked=0

[Form]
Name=Form3
Help=False
ClassStyle=CS_VREDRAW,CS_HREDRAW,CS_DBLCLKS
ClassName=
WinStyle=WS_VISIBLE,WS_EX_CONTROLPARENT,WS_EX_LEFT,WS_EX_LTRREADING,WS_EX_RIGHTSCROLLBAR,WS_BORDER,WS_CAPTION,WS_SYSMENU,WS_CLIPSIBLINGS,WS_CLIPCHILDREN,WS_EX_TOPMOST,WS_POPUP,WS_SIZEBOX
Style=3 - 常规窗口
Icon=
Caption=截图
StartPosition=1 - 屏幕中心
WindowState=0 - 正常
Enabled=True
Repeat=False
Left=0
Top=0
Width=272
Height=241
TopMost=True
Child=False
MdiChild=False
TitleBar=True
SizeBox=True
SysMenu=True
MaximizeBox=False
MinimizeBox=False
Help=False
Hscroll=False
Vscroll=False
MinWidth=0
MinHeight=100
MaxWidth=0
MaxHeight=0
NoActivate=False
MousePass=False
TransPer=0
TransColor=RGB(255,0,255)
Shadow=0 - 无阴影
BackColor=SYS,15
MousePointer=0 - 默认
Tag=
Tab=True
ToolTip=
ToolTipBalloon=False
AcceptFiles=False

[Button]
Name=Command1
Help=
Index=-1
Caption=截图
TextAlign=1 - 居中
Ico=
Enabled=True
Visible=True
Default=False
OwnDraw=False
MultiLine=False
Font=微软雅黑,9,0
Left=201
Top=170
Width=49
Height=29
Layout=9 - 右边和底部
MousePointer=0 - 默认
Tag=
Tab=True
ToolTip=
ToolTipBalloon=False

[Button]
Name=Command2
Help=
Index=-1
Caption=清除
TextAlign=1 - 居中
Ico=
Enabled=True
Visible=True
Default=False
OwnDraw=False
MultiLine=False
Font=微软雅黑,9,0
Left=10
Top=170
Width=54
Height=29
Layout=7 - 跟随底部
MousePointer=0 - 默认
Tag=
Tab=True
ToolTip=
ToolTipBalloon=False

[Picture]
Name=Picture1
Help=
Index=-1
Style=1 - 细边框
Enabled=True
Visible=True
Left=50
Top=15
Width=160
Height=125
Layout=0 - 不锚定
MousePointer=0 - 默认
Tag=
Tab=True
ToolTip=
ToolTipBalloon=False
AcceptFiles=False


[AllCode]
Dim Shared 截图DC As HDC ,截图Bmp As HBITMAP,截图W As long ,截图H as long  

'[Form3]事件 : 窗口完全显示后。
'hWndForm  当前窗口的句柄(WIN系统用来识别窗口的一个编号，如果多开本窗口，必须 Me.hWndForm = hWndForm 后才可以执行后续操作本窗口的代码)
'UserData  来自显示窗口最后1个参数，例： Form2.Show(父窗口句柄,模式,UserData)
Sub Form3_Shown(hWndForm As hWnd, UserData As Integer)
   Form3.WindowPlacementLoad(App.Path & "vicoset.ini", "jietu")
   底图比例 = 1
   底图x    = 0
   底图y    = 0
End Sub

'[Form3]事件 : 窗口已经改变了大小
'hWndForm  当前窗口的句柄(WIN系统用来识别窗口的一个编号，如果多开本窗口，必须 Me.hWndForm = hWndForm 后才可以执行后续操作本窗口的代码)
'fwSizeType = SIZE_MAXHIDE     SIZE_MAXIMIZED   SIZE_MAXSHOW    SIZE_MINIMIZED    SIZE_RESTORED  
''            其他窗口最大化   窗口已最大化     其他窗口恢复    窗口已最小化      窗口已调整大小
'nWidth nHeight  是客户区大小，不是全部窗口大小。
Sub Form3_WM_Size(hWndForm As hWnd, fwSizeType As Long, nWidth As Long, nHeight As Long)
   if fwSizeType = SIZE_MINIMIZED Then Return 
   'xxx.Move DpiScaleI(5), DpiScaleI(5), nWidth - DpiScaleI(10), nHeight - DpiScaleI(30)
   Dim As Long i, x = DpiScaleI(50), y = 0, c, w = nWidth - x * 2, h = nHeight - DpiScaleI(35), pw, tx, ty
   pw = IIf(w > h, h, w)
  
   tx = (w - pw) / 2 + x
   ty = 0
  Picture1.Move tx,ty,pw,pw 
End Sub

'[Form3.Command1]事件 : 单击
'hWndForm    当前窗口的句柄(WIN系统用来识别窗口的一个编号，如果多开本窗口，必须 Me.hWndForm = hWndForm 后才可以执行后续操作本窗口的代码)
'hWndControl 当前控件的句柄(也是窗口句柄，如果多开本窗口，必须 Me.控件名.hWndForm = hWndForm 后才可以执行后续操作本控件的代码 )
Sub Form3_Command1_BN_Clicked(hWndForm As hWnd, hWndControl As hWnd)
   Dim rc As Rect
   GetWindowRect(Picture1.hWnd, @rc)
   
   If 截图Bmp Then DeleteObject 截图Bmp : 截图Bmp = 0
   If 截图DC  Then DeleteDC 截图DC      : 截图DC  = 0
   Dim m_nDC As HDC = GetDC(NULL)
   ' 创建一个兼容的位图
   截图W   = rc.Right  - rc.Left
   截图H   = rc.bottom - rc.top
   截图Bmp = CreateCompatibleBitmap(m_nDC, 截图W, 截图H)
   ' 创建兼容的设备上下文
   截图DC = CreateCompatibleDC(m_nDC)
   ' 将位图选择到兼容的设备上下文中
   If 截图DC Then SelectObject(截图DC, 截图Bmp)
   BitBlt 截图DC, 0, 0, 截图W, 截图H, m_nDC, rc.left, rc.top, SRCCOPY '将原内容获取到内存DC
   ReleaseDC NULL, m_nDC
   
   Form1.Picture1.Refresh
   Form3.Close
   
End Sub

'[Form3.Command2]事件 : 单击
'hWndForm    当前窗口的句柄(WIN系统用来识别窗口的一个编号，如果多开本窗口，必须 Me.hWndForm = hWndForm 后才可以执行后续操作本窗口的代码)
'hWndControl 当前控件的句柄(也是窗口句柄，如果多开本窗口，必须 Me.控件名.hWndForm = hWndForm 后才可以执行后续操作本控件的代码 )
Sub Form3_Command2_BN_Clicked(hWndForm As hWnd, hWndControl As hWnd)
   If 截图Bmp Then DeleteObject 截图Bmp : 截图Bmp = 0
   If 截图DC  Then DeleteDC 截图DC      : 截图DC  = 0
   Form1.Picture1.Refresh 
   Form3.Close 
End Sub


'[Form3.Picture1]事件 : 重绘，系统通知控件需要重新绘画。
'hWndForm    当前窗口的句柄(WIN系统用来识别窗口的一个编号，如果多开本窗口，必须 Me.hWndForm = hWndForm 后才可以执行后续操作本窗口的代码)
'hWndControl 当前控件的句柄(也是窗口句柄，如果多开本窗口，必须 Me.控件名.hWndForm = hWndForm 后才可以执行后续操作本控件的代码 )
Function Form3_Picture1_WM_Paint(hWndForm As hWnd, hWndControl As hWnd) As LResult

   Dim gg As yGDI = yGDI(hWndControl, BGR(255,0,255), True)

   Function = TRUE ' 告诉系统，我们自绘了，不需要系统绘画。
End Function

'[Form3]事件 : 即将关闭窗口，返回非0可阻止关闭
'hWndForm  当前窗口的句柄(WIN系统用来识别窗口的一个编号，如果多开本窗口，必须 Me.hWndForm = hWndForm 后才可以执行后续操作本窗口的代码)
Function Form3_WM_Close(hWndForm As hWnd) As LResult
   Form3.WindowPlacementSave(App.Path & "vicoset.ini", "jietu")
   
   Function = FALSE ' 返回 TRUE 阻止关闭窗口。
End Function

'[Form3]事件 : 完成创建窗口及所有的控件后，此时窗口还未显示。注：自定义消息里 WM_Create 此时还未创建控件和初始赋值。
'hWndForm  当前窗口的句柄(WIN系统用来识别窗口的一个编号，如果多开本窗口，必须 Me.hWndForm = hWndForm 后才可以执行后续操作本窗口的代码)
'UserData  来自显示窗口最后1个参数，例： Form2.Show(父窗口句柄,模式,UserData)
Sub Form3_WM_Create(hWndForm As hWnd,UserData As Integer)


End Sub













